/// BytesMut是可变的字节缓冲区，针对构建和修改字节序列优化：
/// • 预分配容量：减少重新分配次数
/// • 高效追加：支持快速写入操作
/// • 转换为Bytes：可以冻结为不可变的Bytes

#[cfg(test)]

use bytes::{BufMut, BytesMut};

#[test]
fn test_bytes_mut_basic() {
    // 预分配合适的容量, 避免频繁扩容
    let mut buf = BytesMut::with_capacity(1024);
    buf.extend_from_slice(b"hello");
    buf.extend_from_slice(b" world");
    let frozen = buf.freeze(); // 冻结，转换为Bytes
    println!("{:?}", frozen);
}

/// 测试容量管理
/// 预分配容量，避免频繁扩容
#[test]
fn test_bytes_mut_capacity() {
    // 例如处理网络请求，通常请求体大小在4KB左右
    // 合理设置，避免浪费内存空间
    let expected_size = 4 * 1024;
    let needed = 512; // 确保至少有这个空间

    let mut buf = BytesMut::with_capacity(expected_size);

    // 检查是否有足够空间
    if buf.remaining_mut() < needed {
        // 如果没有足够空间，预先分配
        buf.reserve(needed);
    }

    // 现在可以安全高效地写入数据
    // buf.put(&[0; 200]); // 不会触发额外的内存分配
}